Image compression is desirable in image data processing due to the size of the images. A typical image can include over 250,000 bytes of data. Thus, it would require a great deal of disk space to store several of these images in their uncompressed state. Data transfer is slow as well for such large data files. Thus it is desirable to reduce the amount of data to a minimum to save disk space and reduce data transfer time.
Typically, in most compression algorithms that are based on block sizes, a single block size is utilized for the entire image. A single block size is undesirable in some cases. For example, in some images, large portions of the image picture elements (pixels) may be of approximately the same intensity, forming a homogeneous region within the image. In this case a large block size is desirable. A single intensity value can be assigned to the entire homogenous pixel region. The block can be as large as the homogenous region without loss of accuracy or efficiency in the data representation.
Many images, however, are not composed of large homogeneous regions. When the image data is not homogeneous, a smaller block size is desirable. For example, when the image has a large quantity of detail, such as an image of trees or grass, or at a hair line, smaller blocks are desirable. In these nonhomogeneous regions, it is not practical to represent large areas of the image with a single pixel value. Thus it is desirable to utilize a large number of smaller blocks to define the detail present in the nonhomogeneous regions. Thus there is a need for a block size that varies in accordance with the amount of detail encountered in the image.